iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
佛心分享-SideProject30

門外漢的嵌入式地獄系列 第 16

Day 16 。初入嵌入式開發-設備樹 (上)

  • 分享至 

  • xImage
  •  

.dtsi : 通用的設備樹 (類似 header 檔案概念 \ SoC - level)
.dts : 各板子依照不同外設所撰寫的 (board level)

dts vs dtc vs dtb

.dts (device tree source)

在 ARM Linux,一個 .dts 檔案對應一個 ARM 的 machine,一般放置在核心的 arch/arm64/boot/dts/ 目錄

DTC (device tree compiler)

將 .dts 檔案編譯為 .dtb 的工具

.dtb (device tree Blob)

將 .dts 檔案透過 DTC 編譯後的 二進制檔案

DTS 概念與語法

Device Tree是一種描述硬體的資料結構,由一系列被命名的結點(node)和屬性(property)組成,而結點本身可包含子結點。所謂屬性,其實就是成對出現的name和value。

**設備樹當中只會有一個根節點 **

https://ithelp.ithome.com.tw/upload/images/20240811/20146325ejrdPOh08E.png

dtsi

一般dtsi檔案用來說明SoC的外圍設備資訊,例如CPU架構,頻率,外圍暫存器地址範圍,如UART,IIC等。通常一個系列裡有多個SoC (stm32mp151 / 153 / 157) 就會把相同的週邊資訊寫到一個.dtsi檔案裡,避免重複寫相同的東西(沒錯就跟我們的c/c++ 概念相同)。

Node

Decives Tree 是使用樹狀結構來描述硬體訊息, 每一個設備都是一個 Node , 每個 Node 當中會有屬性來說明各設備的資訊。

例如 :

/ : 就是根結點 , 一個設備樹檔案(dts or dtsi)當中只會有一個!! 但通常不會只有一個 dts or dtsi 檔案, 所以會有很多個 / 根結點,最後會自動合併成一個根結點。

Node 的命名方式

name@address

name : 節點名字

address:設備的地址或暫存器的開頭地址

EX : uart3@42080000

label:name@address

label: 這個節點的標籤

name : 節點名字

address:設備的地址或暫存器的開頭地址

EX: uart_hihi:uart3@42080000

我們就可以透過 &uart_hihi 來去引用or存取uart3 這個節點。

下一篇會說明設備樹當中常見的屬性,以及它的用途。基本上我們不太會需要去重新的寫設備樹,大多時候我們都是修改而已,所以我覺得我們主要以看得懂,知道邏輯是什麼應該比較重要!/images/emoticon/emoticon01.gif


上一篇
Day 15 。初入嵌入式開發-Linux Kernel 說明
下一篇
Day 17 。初入嵌入式開發-設備樹 (下)
系列文
門外漢的嵌入式地獄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言